class Api::StoreFriendsController < Api::BaseController
  before_action :set_store

  def create
    @store.friend_request(store_friend_params, store_friend)
    render json: {status: true}
  end

  def agree
    result = $redis.get(@store.cache_key)
    if result.present?
      result = eval(result)
      result.each(&->(h){ h["agreeable"] = true if h["base_id"] = params[:friend_id] })
    end
    $redis.set(@store.cache_key, result)
    @store.agree(store_friend)
    render json: {status: true}
  end

  def friended
    render json: { status: @store.friended?(store_friend) }
  end

  def unfriend
    @store.unfriend(store_friend)
    render json: {status: true}
  end

  private
  def store_friend_params
    params[:agreeable] = false
    params[:name] = @store.name
    params.permit(:base_id, :friend_id, :validation, :agreeable, :name, :uid).to_h
  end

  def set_store
    @store ||= current_store
  end

  def store_friend
    @store_friend = Store.find(params[:friend_id])
  end
end
